﻿using System;
using System.Collections.Generic;
using System.Linq;

namespace Math
{
    public class Calculadora
    {
        private double memoria;

        public Calculadora()
        {
        }

        /*public Calculadora(double valorMemoria)
        {
            memoria = valorMemoria;
        }*/

        public void MemoryClear()
        {
            memoria = 0;
        }

        public void MemorySave(double numero)
        {
            memoria = numero;
        }

        public double MemoryRead()
        {
            return memoria;
        }

        public void MemorySum(double numeroASumar)
        {
            memoria += numeroASumar;
        }

        public void MemoryRest(double numeroARestar)
        {
            memoria -= numeroARestar;
        }

        public static double RaizCuadrada(double numero)
        {
            return System.Math.Sqrt(numero);
        }

        public static double Sumar( params double[] numeros)
        {
            double suma = 0;
            foreach (double numero in numeros)
            {
                suma += numero;
            }

            return suma;
        }

        public static double Multiplicar(params double[] numeros)
        {
            double multiplicacion = numeros[0];
            bool bandera = true;
            foreach (double numero in numeros)
            {
                if (bandera)
                    bandera = false;
                else
                    multiplicacion *= numero;
            }

            return multiplicacion;
        }

        public static double Restar(params double[] numeros)
        {
            double resta = numeros[0];
            bool bandera = true;
            foreach (double numero in numeros)
            {
                if (bandera)
                    bandera = false;
                else
                    resta -= numero;
            }

            return resta;
        }

        public static double Dividir(params double[] numeros)
        {
            double division = numeros[0];
            bool bandera = true;
            foreach (double numero in numeros)
            {
                if (bandera)
                    bandera = false;
                else
                    division /= numero;
            }

            return division;
        }

        public static double CalcularPorcentaje(double total, double porcentaje)
        {
            double valorTotal = 0;

            double valorPorcentaje = porcentaje / 100;

            valorTotal = total * valorPorcentaje;

            return valorTotal;
        }

        public static double CalcularPorcentaje(double total, double porcentaje,bool porcentajeEnDecimal)
        {
            if (porcentajeEnDecimal)
            {
                double valorTotal = 0;

                valorTotal = total * porcentaje;

                return valorTotal;
            }
            else
                return CalcularPorcentaje(total, porcentaje);
        }
    }
}
